home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / engine / code.lua next >
Text File  |  2005-07-16  |  9KB  |  254 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky13.ogg")
  8.     local pokus = getRestartCount()
  9.     local roompole = createArray(2)
  10.  
  11.     WAS_SMALL = 1
  12.     WAS_BIG = 2
  13.  
  14.     -- -------------------------------------------------------------
  15.     local function prog_init_room()
  16.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  17.  
  18.         switch(pokus){
  19.             [1] = function()
  20.                 room.uvod = 2
  21.             end,
  22.             [2] = function()
  23.                 room.uvod = 1
  24.             end,
  25.             default = function()
  26.                 room.uvod = 3 + random(2)
  27.             end,
  28.         }
  29.         if roompole[1] == 0 then
  30.             room.omotoru = random(50) + 30
  31.         else
  32.             room.omotoru = random(200) + 50 * pokus
  33.         end
  34.         room.oklici = 0
  35.         room.vypnula = -1
  36.         room.zapnula = -1
  37.         room.jeli = 0
  38.         local who = WAS_SMALL
  39.         local radius = 0
  40.  
  41.         return function()
  42.             if small.dir ~= dir_no then
  43.                 who = WAS_SMALL
  44.             elseif big.dir ~= dir_no then
  45.                 who = WAS_BIG
  46.             end
  47.             if klicek.X + 2 == motorek.X and klicek.Y - 2 == motorek.Y then
  48.                 room.vypnula = 0
  49.                 if room.zapnula == 0 then
  50.                     game_killPlan()
  51.                     room.zapnula = who
  52.                 end
  53.                 roompole[1] = 1
  54.                 if not klicek:isTalking() then
  55.                     klicek:talk("mot-x-motor", VOLUME_FULL, -1)
  56.                 end
  57.                 if math.mod(game_getCycles(), 3) == 0 then
  58.                     if radius < 30 then
  59.                         radius = radius + 2
  60.                     end
  61.                     roompole[0] = roompole[0] + 1
  62.                     pom1 = roompole[0]
  63.                     local left = radius * math.sin(pom1 / 20 * math.pi)
  64.                     local top = radius * math.cos(pom1 / 20 * math.pi)
  65.                     game_setScreenShift(left, top)
  66.                 end
  67.             else
  68.                 room.zapnula = 0
  69.                 if room.vypnula == 0 then
  70.                     room.vypnula = who
  71.                     game_killPlan()
  72.                 end
  73.                 if klicek:isTalking() then
  74.                     klicek:killSound()
  75.                 end
  76.                 radius = 0
  77.                 game_setScreenShift(0, 0)
  78.             end
  79.             if no_dialog() and isReady(small) and isReady(big) then
  80.                 if room.omotoru > 0 then
  81.                     room.omotoru = room.omotoru - 1
  82.                 end
  83.                 if room.omotoru >= 0 and (small.vylezla == 1 or big.vylezla == 1) then
  84.                     room.omotoru = -1
  85.                 end
  86.                 if room.uvod > 0 then
  87.                     adddel(random(50) + 10)
  88.                     switch(room.uvod){
  89.                         [1] = function()
  90.                             addm(0, "mot-m-info")
  91.                             addv(random(10), "mot-v-konvencni")
  92.                         end,
  93.                         [2] = function()
  94.                             addm(0, "mot-m-tak")
  95.                             addv(random(10), "mot-v-zavery")
  96.                         end,
  97.                         [3] = function()
  98.                             switch(random(2)){
  99.                                 [0] = function()
  100.                                     addm(0, "mot-m-info")
  101.                                 end,
  102.                                 [1] = function()
  103.                                     addm(0, "mot-m-tak")
  104.                                 end,
  105.                             }
  106.                             switch(random(2)){
  107.                                 [0] = function()
  108.                                     addv(random(10), "mot-v-konvencni")
  109.                                 end,
  110.                                 [1] = function()
  111.                                     addv(random(10), "mot-v-zavery")
  112.                                 end,
  113.                             }
  114.                         end,
  115.                     }
  116.                     room.uvod = 0
  117.                 elseif room.omotoru == 0 then
  118.                     room.omotoru = -1
  119.                     switch(roompole[1]){
  120.                         [0] = function()
  121.                             addm(30, "mot-m-akce"..random(3))
  122.                             addv(random(10), "mot-v-funkce"..random(3))
  123.                         end,
  124.                         [1] = function()
  125.                             addv(30, "mot-v-znovu"..random(2))
  126.                         end,
  127.                     }
  128.                 end
  129.                 if room.oklici == 0 and small.dir ~= dir_no and klicisko.dir ~= dir_no and random(100) < 7 then
  130.                     room.oklici = 1
  131.                     if random(100) < 35 then
  132.                         addv(5, "mot-v-klic")
  133.                         addm(7, "mot-m-ublizit")
  134.                     end
  135.                 elseif room.zapnula > 0 then
  136.                     if room.jeli == 0 then
  137.                         pom1 = 1
  138.                     else
  139.                         pom1 = random(4)
  140.                     end
  141.                     room.jeli = 1
  142.                     if pom1 == 1 or pom1 == 2 then
  143.                         switch(room.zapnula){
  144.                             [WAS_SMALL] = function()
  145.                                 addv(random(20) + 10, "mot-v-zvuky"..random(2))
  146.                                 if pom1 == 1 then
  147.                                     addm(random(10) + 10, "mot-m-nemuzu"..random(2))
  148.                                 end
  149.                             end,
  150.                             [WAS_BIG] = function()
  151.                                 addm(random(20) + 10, "mot-m-zvuky"..random(2))
  152.                                 addv(random(10) + 10, "mot-v-nemuzu"..random(2))
  153.                             end,
  154.                         }
  155.                     elseif pom1 == 3 then
  156.                         addm(random(30) + 20, "mot-m-mayday")
  157.                     end
  158.                     room.zapnula = -1
  159.                 elseif room.vypnula > 0 then
  160.                     if room.jeli == 1 or random(100) < 60 then
  161.                         switch(room.vypnula){
  162.                             [WAS_SMALL] = function()
  163.                                 addv(random(10) + 5, "mot-v-konecne"..random(2))
  164.                             end,
  165.                             [WAS_BIG] = function()
  166.                                 addm(random(10) + 5, "mot-m-konecne"..random(2))
  167.                             end,
  168.                         }
  169.                     end
  170.                     if room.jeli == 1 then
  171.                         room.jeli = 2
  172.                     end
  173.                     room.vypnula = -1
  174.                 end
  175.             end
  176.         end
  177.     end
  178.  
  179.     -- -------------------------------------------------------------
  180.     local function prog_init_klicek()
  181.         return function()
  182.             if klicek:isTalking() then
  183.                 if klicek.afaze == 2 then
  184.                     klicek.afaze = 0
  185.                 else
  186.                     klicek.afaze = klicek.afaze + 1
  187.                 end
  188.             elseif klicek.afaze == 1 then
  189.                 klicek.afaze = 2
  190.             end
  191.             klicek:updateAnim()
  192.         end
  193.     end
  194.  
  195.     -- -------------------------------------------------------------
  196.     local function prog_init_small()
  197.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  198.  
  199.         small.vylezla = 0
  200.  
  201.         return function()
  202.             if small.X == 35 then
  203.                 small.vylezla = 1
  204.             end
  205.         end
  206.     end
  207.  
  208.     -- -------------------------------------------------------------
  209.     local function prog_init_big()
  210.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  211.  
  212.         big.vylezla = 0
  213.  
  214.         return function()
  215.             if big.X == 8 then
  216.                 big.vylezla = 1
  217.             end
  218.         end
  219.     end
  220.  
  221.     -- --------------------
  222.     local update_table = {}
  223.     local subinit
  224.     subinit = prog_init_room()
  225.     if subinit then
  226.         table.insert(update_table, subinit)
  227.     end
  228.     subinit = prog_init_klicek()
  229.     if subinit then
  230.         table.insert(update_table, subinit)
  231.     end
  232.     subinit = prog_init_small()
  233.     if subinit then
  234.         table.insert(update_table, subinit)
  235.     end
  236.     subinit = prog_init_big()
  237.     if subinit then
  238.         table.insert(update_table, subinit)
  239.     end
  240.     return update_table
  241. end
  242. local update_table = prog_init()
  243.  
  244.  
  245. -- -----------------------------------------------------------------
  246. -- Update
  247. -- -----------------------------------------------------------------
  248. function prog_update()
  249.     for key, subupdate in pairs(update_table) do
  250.         subupdate()
  251.     end
  252. end
  253.  
  254.